יסודות מבני נתונים. תרגול :9 ערימה - Heap

Similar documents
עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

Practical Session No. 13 Amortized Analysis, Union/Find

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

תרגול 8. Hash Tables

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

תרגול 11 תור עץ חיפוש בינארי

פרק מיון וחיפוש - לשם מה? הגדרה

ASP.Net MVC + Entity Framework Code First.

מבוא לתכנות ב- JAVA תרגול 7

חזרה, מיונים פולינה לוצקר

הגדרה: משפחת עצים תקרא מאוזנת אם (n.h(t) = O(log

מבני נתונים תרגיל 5 שאלות לגבי העבודה יש להעלות בפורום של הקורס או בשעות הקבלה של המרצה או המתרגל האחראיים על העבודה.

מבני נתונים תרגיל 4 פתרון

םימתירוגלאו םינותנ ינבמ המירעו תינס, חמ רות רקצול הנילופ

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

סיכום מבני נתונים )שיעור( מרצה: אלכס סמורודניצקי. להערות: אמיר נווה

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

בוחן בתכנות בשפת C בצלחה

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

Depth-First Search DFS

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

אוניברסיטת בן גוריון בנגב

תרגול מס' 01 אלגוריתם דיניץ

A R E Y O U R E A L L Y A W A K E?

מערכים Haim Michael. All Rights Reserved.

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

תרגול נושאי התרגול כעץ חיפוש בינארי : העץ הימני. Inorder(x) 1) if x NULL 2) then Inorder(left(x)) 3) print key[x] 4) Inorder(right(x))

עצים ועצי חיפוש חומר קריאה לשיעור זה. Chapter 5.5 Trees (91 97) Chapter 13 Binary Search Trees ( )

פרק היררכי

בחינת בגרות, תשע"ז מס' שאלון: מדעי המחשב שאלה 1. Java. blog.csit.org.il הילה קדמן

הקיטסיגול הרבחה יעדמל בלושמה גוחה

Heap and Merge Sorts

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

Recursive Mergesort. CSE 589 Applied Algorithms Spring Merging Pattern of Recursive Mergesort. Mergesort Call Tree. Reorder the Merging Steps

- 4.3 נמצא ברשימה? הוראת מדעי המחשב, אוניברסיטת תל-אביב

מושגים בסיסיים תלמידים והורים יקרים,

Genetic Tests for Partners of CF patients

interface Student {tag: Student, name: string; age: number;} const makestudent = ( name: string, age: number ) : Student =>

קובץ שאלות פתורות אביב 2102

חוברת מתכונים לפלטת בראוניז במולטיקייק מבית icake

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

Expressions (ex 8) Wild World (ex 7) Cars (ex 9)

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

T H E S U N F L O W E R L I M I T S T O F O R G I V E N E S S

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

אנגלית (MODULE E) בהצלחה!

מדעי המחשב מעבר על הרשימה למציאת המקום המתאים לאיבר. החזרת ה- value של ההפניה למינימום. הנחה: הרשימה לא ריקה.

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

בסיעתא דשמיא. Algorithms. Yosef Zohar תוכן עניינים

לצפייה בפתרון בווידאו לתרגילים שבחוברת, כנסו ל "סטטיסטיקה והסתברות" בשאלון 802 שבאתר

פרק 10 מערכים 10.1 מערך ואיברי מערך 1 בעיה. המשתתפים. ישמו את האלגוריתם בשפת.Java שאלה 10.1 שווים ל- 4.60? קליטת נתוני הקלט, שמירתם וצבירתם

Patents Basics. Yehuda Binder. (For copies contact:

שאלה ) 1 מבחינה של פרופ' נוגה אלון ( G V עם משקלים על הקשתות, ונתון עץ פורש מינימלי של G. נניח

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

תכנון אלגוריתמים, אביב 2010, תרגול מס' 7 סריקה לעומק, מיון טופולוגי, רכיבים קשירים היטב. time time 1

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

SHABBOS, 10 TAMMUZ, 5778

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

Name Page 1 of 5. ,דף ד: This week s bechina starts at the bottom of שיר של חול

4...Informed Search Strategies Partial Order Planning 29...Hierarchical Decomposition Reenforcement Learning 40...Unsupervised Learning

הרצאה מספר 10 נושאים לשיעור זה: סיכום הפקודות עד לשיעור זה *** )S-Q( = מקומות בהם ניתן לשלב תתי שאילתות

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

סיבוכיות זמן ריצה רדוקציות ושלמות ב- NP המחלקה P הגדרה: = המחלקה NP הגדרה: שפה סגירות שפות הגדרה: רדוקציה

קורס מטלב לפיסיקאים שיעור מס' 10: משתנים מורכבים

תורשכ ירפס לכ ץבוק " ב י קלח יללכ רעש

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

לאחר מכן נוכל לכתוב תוכניות שכוללות אלגוריתמים

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

Operating Systems, 142. Practical Session 12 File Systems, part 2

מבוא למדעי המחשב בשפת JAVA חוברת תרגילים... 1

מספר מילה. you very hungry am דוגמאות: decision trees ההודעה.

כפתור רדיו בחירה בודדת מתוך רשימת אפשרויות

Am Chofshi B'artzenu Case Studies

Structural Vs. Nominal Typing

שבות תחום מצוות עשה שזמן גרמא סמיכה תקיעה, שברים, תרועה. The אי ור of performing any מלאכה on Rosh HaShanah שופר in preparation of the

A Long Line for a Shorter Wait at the Supermarket

מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

Ron Famini, Lior Bar,

מבוא לאסמבלי מאת אופיר בק חלקים נרחבים ממאמר זה נכתבו בהשראת הספר "ארגון המחשב ושפת סף" אשר נכתב ע"י ברק גונן לתוכנית גבהים של משרד החינוך.

מבוא למחשב בשפת פייתון

Information The marks for questions are shown in brackets. The maximum mark for this paper is 50. You must not use a dictionary.

Transcription:

יסודות מבני נתונים תרגול :9 ערימה - Heap

maximum שאלה: כמה זמן לוקח לחפש איבר בערימה? תשובה:,O(n) למרות שבערימה קיים סדר מסויים.

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 דוגמה: 7 11 13 21 12 17 20 34 22 51 14 41 9 7 Heap_size 11 13 21 12 17 20 הוסיפו את 9 מוסיפים את הערך 9 כעלה מבצעים Up-Heapify לתיקון הערימה.1.2 34 22 51 14 41 9 קטן מאביו מבצעים החלפה

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 דוגמה: 7 11 13 21 12 9 20 34 22 51 14 41 17 11 7 13 21 12 9 20 Heap_size הוסיפו את 9 מוסיפים את הערך 9 כעלה מבצעים Up-Heapify לתיקון הערימה גדול מאביו מסיימים קטן מאביו מבצעים החלפה.1.2 34 22 51 14 41 17

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 11 9 21 12 13 20 34 22 51 14 41 דוגמה: 17 Key = 7 7 Heap_size 11 21 12 13 20 34 22 51 14 41 17 9 Extract- כעת בצעו min מוציאים את השורש )ושומרים את ערכו( מעבירים לשורש את העלה האחרון מבצעים Down-Heapify מהשורש לתיקון הערימה.1.2.3

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 11 9 21 12 13 20 34 22 51 14 41 17 Key = 7 17 דוגמה: גדול מבנו הקטן מבצעים החלפה Heap_size 11 21 12 13 20 34 22 51 14 41 9 כעת בצעו Extract-min מוציאים את השורש )ושומרים את ערכו( מעבירים לשורש את העלה האחרון מבצעים Down-Heapify מהשורש לתיקון הערימה.1.2.3

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 דוגמה: 9 11 17 21 12 13 20 34 22 51 14 41 17 Key = 7 9 Heap_size 11 17 21 12 13 20 34 22 51 14 41 Extract- כעת בצעו min מוציאים את השורש )ושומרים את ערכו( מעבירים לשורש את העלה האחרון מבצעים Down-Heapify מהשורש לתיקון הערימה מחזירים את הערך שנשמר גדול מבנו הקטן מבצעים החלפה קטן מבנו הקטן מסיימים.1.2.3.4

i Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 11 9 21 12 13 20 34 22 51 14 Key = 11 גדול מאביו מסיימים גדול מבנו הקטן מבצעים החלפה 11 7 קטן מבנו הקטן מסיימים 21 12 13 20 9 Heap_size הדגמה: מחקו את האיבר השני key H[i] H[i] H[heap_size] heap_size -- Down-Heapify(H, i) Up-Heapify(H, i) return key 34 22 51 14 אם כך, מדוע ייתכן שנצטרך לבצע?up-heapify

i Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 11 15 21 12 17 20 34 22 51 14 Key = 17 11 7 15 Heap_size 21 12 17 20 הדגמה: מחקו את האיבר השישי גדול מבנו הקטן מסיימים key H[i] H[i] H[heap_size] heap_size -- Down-Heapify(H, i) Up-Heapify(H, i) return key קטן מאביו מחליפים 34 22 51 14

i Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 11 15 21 12 14 20 34 22 51 14 Key = 17 11 7 Heap_size 15 21 12 14 20 הדגמה: מחקו את האיבר השישי key H[i] גדול מאביו מסיימים H[i] H[heap_size] heap_size -- Down-Heapify(H, i) Up-Heapify(H, i) return key 34 22 51

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 11 13 21 12 17 20 34 22 51 14 41 7 Heap size 11 13 שאלה: האם במחיקת שורש האיבר שהועתק לשורש תמיד ידרוש תיקון? 21 12 17 20 34 22 51 14 41 תשובה: לא. לדוגמא, עץ עם שני צמתים, או עץ עם שלושה צמתים כך שהבן השמאלי של השורש יותר קטן מהבן הימני. שאלה: יש עוד דוגמאות כאילו?

Heaps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 11 13 21 12 17 20 34 22 51 14 41 7 Heap size 11 13 שאלה: האם במחיקת שורש האיבר שהועתק לשורש תמיד ידרוש תיקון? 21 12 17 20 34 22 51 14 41 תשובה: לא. כדי שלא ידרש תיקון לאחר מחיקת השורש, העלה הימני ביותר חייב להיות גם האיבר השני בגודלו, ולכן צריך להמצא ברמה השנייה של העץ. לכן הדוגמאות לכך הם עצים עם לכל היותר שתי רמות.

Question 1 A max-heap is given as a heap-array A of size 15. The heap contains all keys in the range 1..15, each key exactly ones. 1. Where can be located the key 15? Specify possible indexes. Answer: A[1]. in a max-heap the maximum is always at the root. 2. Where can be located the key 1? Answer: anywhere on the last level, i.e., in A[8] A[15]. 3. Which keys can be located in A[2]? Answer: 7-14. We know that A is a complete tree, so a sub tree rooted by A[2] is also a complete tree with 7 nodes. Thus we need 6 elements smaller than A[2] to fill the sub tree of A[2], thus A[2] has to be at least 7. 3. Where can be located the key 13? Answer: in A[2] A[7]. There are exactly two elements larger than 13 (14, 15), so it can t reside lower than level 2. On level two it can reside anywhere.

Question 2 Suggest a data structure for storing integers that supports the following operations. Init(S) Initialize data structure with n elements of S set O(n) expected time Max() Return maximum O(1) expected time Insert(x) Insert x O(log n) expected time Delete(x) Delete x O(log n) expected time S = {9, 7, 5, 4, 2, 1} דוגמא :? O(logn) איך נמחוק בזמן max heap 1 2 4 נשמתש בטבלת גיבוב בנוסף, עם מצביעים לערימה 5 7 9 Delete (7) hash (7) = 7 get pointer to 7 in the heap delete 7

Question 3 Given a max-heap H, what is the time complexity of finding the 3 largest keys in H? פתרון: Y שלושה אלמנטים הגדולים ביותר בערימה הם: השורש הבן הגדול של השורש, נסמן אותו ב Y הגדול לבין הבן השני של השורש, ושני בניו של בסה"כ ביצענו השוואה אחת למצוא את האלמנט השני בגודלו, ושתי השוואות למצוא את האלמנט השלישי בגודלו, כלומר ביחד 3 השוואות.

Given a max-heap H, what is the time complexity of finding the K largest keys in H? פתרון: Question 3 אלמנטים הגדולים ביותר בערימה הם: הראשון בגודלו - השורש )מועמד יחיד( השני בגודלו - הבן הגדול של השורש, נסמן אותו ב Y )שני מועמדים, השוואה אחת( שלישי בגודלו - הגדול לבין הבן השני של השורש, ושני בניו של Y )שלושה מועמדים, שתי השוואות( ה Kי בגודלו לפי האבחנה הנ"ל, יהיו K מועמדים מהם יבחר (1-K השוואות( K בסה"כ כמות ההשוואות שנבצע היא: ) 2 1+2+3+ +K-1 K(K+1)/2 = O(K פתרון: נשתמש בערימת עזר אליה נכניס בהתחלה שורש של הערימה הקיימת. כל פעם נוציא מהערימה הזו מקסימום, ובמקומו נכניס את הבנים שלו מהערימה המקורית. כאשר איבר מוכנס לערימת עזר, הוא שומר מצביע על עצמו בערימה המקורית. זמן ריצה: בערימת עזר לכל היותר K איברים, בשלב שבו בוחרים את האיבר ה K י בגודלו. אז כל פעולת הכנסה והוצאת מקסימום לוקחת (k. O(log לכן, עבור K פעולות כאילו נבזבז logk) O(k זמן. עבודה עצמית: לשדרג את האלגוריתם הנ"ל כך שיעבוד בזמן logk) O(k

איברים בהתאמה.?O n 2 Question 4 נתונות שני ערימות מינימום H 1,H 2 עם n 1,n 2 כל האיברים ב H 1 קטנים האיברים ב H. 2 איך ניתן לאחד את הערימות לערימה אחת בזמן )ניתן להניח כי שתי הערימות משתמשות במערך < מ- n.( 1 + n 2 :n 1 n 2 נצרף את איברי. החל מאינדקס n 1 + 1 למערך של H 1 H 2 מכיוון שכל האיברים של קטנים מהאיברים של נקבל ערימה מאוחדת חוקית. H 2 H 1 פתרון: אם אם :n 2 > n 1 נבנה ערימה חדשה עם כל האיברים של H 1 H, 2 זמן ריצה : 2 O n 1 + n 2 = O 2n 2 = O n

Question 5 נתונים k מערכים ממויינים A 1, A, k עם מספר כולל של n ערכים כאשר k. n תארו אלגוריתם בזמן O n log k למיזוג של המערכים הנתונים למערך ממויין אחד. A 1 1 2 5 13 48 49 56 73... 94 A 2 3 25 32 37 62... 75 A 3 1 2 8... 33... A k 4 6 12 13 26 48... 99 merge 1 2 3

פתרון: רעיון נבנה ערימה שתשמור בכל שלב את האיברים החשודים להיות האיבר הקטן הבא. כלומר, נרצה לשמור את האיבר הראשון בכל אחד מהמערכים A. 1, A, k נשתמש בערימת מינימום אשר כל איבר בה הוא שלשה מהצורה (d,i,ad[i]) כאשר. 1 d k,1 i n הערימה תיוצג ע"י המערך B. ראשית נבנה ערימה עם האיברים הראשונים במערכים A 1, A, k בזמן O. k בכל צעד נוציא את האיבר המינימלי בערימה ונכניס אותו למערך הפלט M. נוציא את האיבר שהוצאנו מהמערך המקורי שלו ונביא משם את האיבר המינימלי הבא. Worst case time analysis: Build-Heap : O(k) done 1 time Extract-Min : O(log k) done n times Heap-Insert : O(log k) done n times Total: O(nlogk) Question 5 for d 1 to k B[d] (d, 1, A d [1]) Build-Heap(B) /*By the order of A d [1] */ for j=1 to n (d, i, x) Extract-Min(B) M[j] x if i < A d.length then Heap-Insert(B,(d, i+1, A d [i+1]))

Init Insert(x) FindMin() FindMax() DelMin() DelMax() n Question 6 נתונה קבוצה S המכילה n מספרים שלמים חיוביים. הציעו מבנה נתונים שמאחסן מספרים שלמים חיוביים, ותומך בפעולות הבאות. פתרון: ערימת מינימום H min משתנה נוסף max למקסימום שנעדכן אותו ב Insert למצוא מקסימום בערימת מינימום.O(n) אפשר להחזיק בנוסף לערך של מקסימום גם מצביע למקסימום בערימה. אבל צריך לאחר המחיקה של מקסימום גם לעדכן את המקסימום החדש O(n) כדי למצוא אותו. H min 4 5 4 11 9 8 max = 11 דוגמא : {7,5,9,4,8,11}

Init Insert(x) FindMin() FindMax() DelMin() DelMax() n Question 6 נתונה קבוצה S המכילה n מספרים שלמים חיוביים. הציעו מבנה נתונים שמאחסן מספרים שלמים חיוביים, ותומך בפעולות הבאות. פתרון: ערימת מינימום H min משתנה נוסף max למקסימום שנעדכן אותו ב Insert למצוא מקסימום בערימת מינימום.O(n) אפשר להחזיק בנוסף לערך של מקסימום גם מצביע למקסימום בערימה. אבל צריך לאחר המחיקה של מקסימום גם לעדכן את המקסימום החדש O(n) כדי למצוא אותו. H min 4 5 4 11 9 8 max = 11 דוגמא : {7,5,9,4,8,11}

Init Insert(x) n Question 6 נתונה קבוצה S המכילה n מספרים שלמים חיוביים. הציעו מבנה נתונים שמאחסן מספרים שלמים חיוביים, ותומך בפעולות הבאות. פתרון: FindMin() FindMax() נבנה שתי ערימות אחת מינימום H min והשנייה מקסימום ערימת מינימום ערימת מקסימום H min H max H max DelMin() DelMax() מחיקה מערימת מינימום O(logn) מחיקה מערימת מקסימום? צריך קודם לצמוא את האיבר המינימלי בה וזה לוקח O(n) זמן. H min H 4 max 11 5 8 8 4 11 9 4 5 7 9 H max מצביעים הדדיים בין H min לבין דוגמא : {7,5,9,4,8,11} דוגמא למצביע הדדי

Question 6 Store the elements in two heaps, Min-Heap H min and Max-Heap H max with mutual pointers, each element has a pointer to the element with the same value in the other heap. Init Build H min in O(n) and H max in O(n) Insert(x) Insert x to H min in O(log n) Insert x to H max in O(log n) Update the pointers in O(1) FindMin() Return the root of H min in O(1) FindMax Return the root of H max in O(1) DelMin Delete the minimum from H min in O(log n) Delete the same element from H max by following the mutual pointer in O(log n) DelMax Delete the maximum from H max in O(log n) Delete the same element from H min by following the mutual pointer in O(log n)